[毎日Kotlin] Day33. Get used to new style
はじめに
毎日Kotlinシリーズです。
このシリーズを初めての方はこちらです。「毎日Kotlin」はじめました | Developers.IO
問題
Get used to new style | Try Kotlin
Rewrite the following Java function to Kotlin.
public Collection<String> doSomethingStrangeWithCollection( Collection<String> collection ) { Map<Integer, List<String>> groupsByLength = Maps.newHashMap(); for (String s : collection) { List<String> strings = groupsByLength.get(s.length()); if (strings == null) { strings = Lists.newArrayList(); groupsByLength.put(s.length(), strings); } strings.add(s); } int maximumSizeOfGroup = 0; for (List<String> group : groupsByLength.values()) { if (group.size() > maximumSizeOfGroup) { maximumSizeOfGroup = group.size(); } } for (List<String> group : groupsByLength.values()) { if (group.size() == maximumSizeOfGroup) { return group; } } return null; }
fun doSomethingStrangeWithCollection(collection: Collection<String>): Collection<String>? { val groupsByLength = collection. groupBy { s -> TODO() } val maximumSizeOfGroup = groupsByLength.values.map { group -> TODO() }.max() return groupsByLength.values.firstOrNull { group -> TODO() } }
狙い
ここで考えて欲しい問題の意図はなんだろうか?
今日は総復習です。わからないところはもう一度見直しましょう。
解答例
fun doSomethingStrangeWithCollection(collection: Collection<String>): Collection<String>? { val groupsByLength = collection.groupBy { s -> s.length } val maximumSizeOfGroup = groupsByLength.values.map { group -> group.size }.max() return groupsByLength.values.firstOrNull { group -> group.size == maximumSizeOfGroup } }
- [毎日Kotlin] Day29. Group By
- [毎日Kotlin] Day24. Filter; map
- [毎日Kotlin] Day25. All, Any and other predicates
こちらを見返してみましょう!
あとがき
Day34.でまたお会いしましょう。